#include <search.h>

struct node {
    struct node *next;
    struct node *prev;
};

void insque(void *element, void *pred)
{
    struct node *e = element;
    struct node *p = pred;

    if (!p) {
        e->next = e->prev = 0;
        return;
    }
    e->next = p->next;
    e->prev = p;
    p->next = e;
    if (e->next)
        e->next->prev = e;
}

void remque(void *element)
{
    struct node *e = element;

    if (e->next)
        e->next->prev = e->prev;
    if (e->prev)
        e->prev->next = e->next;
}
